package com.swanclouds.model.managers.Oem.BMC;

import com.swanclouds.common.Buildable;
import com.swanclouds.model.common.redfish.Oem;
import com.swanclouds.model.managers.EthernetInterfaces;
import com.swanclouds.model.managers.builder.BMC.UpdateEthernetInterfacesBuilder;
import com.swanclouds.redfish.common.redfish.Addresses;

import java.util.List;

/**
 * @author 李文强
 */
public interface BMCUpdateEthernetInterfaces extends EthernetInterfaces, Buildable<UpdateEthernetInterfacesBuilder> {

    /**
     * 接口使能，表示接口是否可用（接口使能时，若ipv4和ipv6均未使能，则使能ipv4）
     * @return Boolean
     */
    Boolean getInterFaceEnabled();

    /**
     * 指定BMC管理网口的速率（仅在AutoNeg为false时存在该字段，建议该字段单独配置）
     * @return Integer
     */
    Integer getSpeedMbps();

    /**
     * 自动协商模式，表示速率和复用是自动协商的（建议该字段单独配置）
     * @return Boolean
     */
    Boolean getAutoNeg();

    /**
     * 全双工模式（仅在AutoNeg为false时存在该字段，建议该字段单独配置）。
     * @return Boolean
     */
    Boolean getFullDuplex();

    /**
     * 最大传输单元大小，范围1280到1500
     * @return Integer
     */
    Integer getMTUSize();

    /**
     *  指定BMC网口的VLAN信息
     * @return Vlan
     */
   // Vlan getVLAN();

    /**
     * 自定义信息
     * @return Oem
     */
    Oem getOem();

    /**
     *  指定BMC网口的IPv4信息
     * @return java.util.List
     */
    List<Addresses> getIpv4Addresses();

    /**
     * 指定BMC网口的IPv6信息
     * @return java.util.List
     */
    //List<Addresses> getIpv6Addresses();

    /**
     * 指定BMC网口的IPv4静态地址信息
     * @return java.util.List
     */
    List<Addresses> getIPv4StaticAddresses();

    /**
     * 指定BMC网口的静态IPv6信息(配置多个IPV6静态地址时，建议此字段单独配置)
     * @return java.util.List
     */
    List<Addresses> getIPv6StaticAddresses();

    /**
     * 指定BMC网口的IPv6网关地址
     * @return String
     */
    String getIPv6DefaultGateway();

    /**
     * IPv6静态默认网关地址。（ipv6仅支持一个网关，所以IPv6DefaultGateway和IPv6StaticDefaultGateways仅支持一个）
     * @return String
     */
    String getIPv6StateDefaultGateway();

    /**
     * DNS服务器信息。
     * 格式为：
     * [
     * "主DNS服务器IPv4或IPv6地址",
     * "备DNS服务器IPv4或IPv6地址"
     * ]
     * @return String[]
     */
    String[] getNameServers();

    /**
     *静态的DNS服务器信息。
     * 格式为：
     * ["主DNS服务器IPv4或IPv6地址","备DNS服务器IPv4或IPv6地址"]
     * @return String[]
     */
    String[] getStaticNameServices();

    /**
     * 指定BMC网口的主机名（当FQDN存在时，以FQDN第一个字段设定主机名）
     * @return String
     */
    String getHostName();

    /**
     * 指定BMC网口的全限定域名
     * @return String
     */
    String getFQDN();
}
